#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Dify 应用调用示例
支持聊天、完成和工作流类型的应用
"""

from dify_agent_client import DifyAgentClient

def auto_detect_example():
    """自动检测应用类型示例"""
    
    # 您的Dify配置
    BASE_URL = "http://localhost/v1" #智能客服
    API_KEY = "app-cFEQn3Qmto8Owo3JeaSEmJm2" #智能客服
   
    # 创建客户端
    client = DifyAgentClient(BASE_URL, API_KEY)
    
    user_input = "黄金价格和哪些因素有关"
    print(f"发送消息: {user_input}")
    
    # 使用自动检测模式，让客户端自动判断应该使用哪个API端点
    result = client.chat_completion(
        user_input=user_input,
        user_id="demo_user",
        app_type="auto"  # 自动检测应用类型
    )
    
    if result.get("error"):
        print(f"调用失败: {result.get('message')}\n")
    else:
        print(f"应用回复: {result.get('answer')}\n")
        if result.get('conversation_id'):
            print(f"会话ID: {result.get('conversation_id')}")
        if result.get('workflow_run_id'):
            print(f"工作流运行ID: {result.get('workflow_run_id')}")

def chat_app_example():
    """聊天应用示例"""
    
    # 您的Dify配置
    BASE_URL = "http://localhost/v1"#智能客服
    API_KEY = "app-cFEQn3Qmto8Owo3JeaSEmJm2"   #智能客服
   
    
    # 创建客户端
    client = DifyAgentClient(BASE_URL, API_KEY)
    
    user_input = "黄金价格和哪些因素有关"
    print(f"发送消息到聊天应用: {user_input}")
    
    # 明确指定使用聊天应用
    result = client.chat_completion(
        user_input=user_input,
        user_id="demo_user",
        app_type="chat"  # 明确指定为聊天应用
    )
    
    if result.get("error"):
        print(f"调用失败: {result.get('message')}")
    else:
        print(f"聊天应用回复: {result.get('answer')}")
        print(f"会话ID: {result.get('conversation_id')}")

def completion_app_example():
    """完成应用示例"""
    
    # 您的Dify配置
    BASE_URL = "http://localhost/v1"
    API_KEY = "app-cFEQn3Qmto8Owo3JeaSEmJm2"
    
    # 创建客户端
    client = DifyAgentClient(BASE_URL, API_KEY)
    
    user_input = "黄金价格和哪些因素有关"
    print(f"发送消息到完成应用: {user_input}")
    
    # 明确指定使用完成应用
    result = client.chat_completion(
        user_input=user_input,
        user_id="demo_user",
        app_type="completion"  # 明确指定为完成应用
    )
    
    if result.get("error"):
        print(f"调用失败: {result.get('message')}")
    else:
        print(f"完成应用回复: {result.get('answer')}")

def workflow_app_example():
    """工作流应用示例"""
    
    # 您的Dify配置
    BASE_URL = "http://localhost/v1" 
    API_KEY = "app-cFEQn3Qmto8Owo3JeaSEmJm2" #智能客服

    
    # 创建客户端
    client = DifyAgentClient(BASE_URL, API_KEY)
    
    user_input = "黄金价格和哪些因素有关"
    print(f"运行工作流应用: {user_input}")
    
    # 明确指定使用工作流应用
    result = client.chat_completion(
        user_input=user_input,
        user_id="demo_user",
        app_type="workflow"  # 明确指定为工作流应用
    )
    
    if result.get("error"):
        print(f"调用失败: {result.get('message')}")
    else:
        print(f"工作流应用回复: {result.get('answer')}")
        print(f"工作流运行ID: {result.get('workflow_run_id')}")

def main():
    print("=== Dify 应用调用示例 ===\n")
    
    print("1. 自动检测应用类型:")
    auto_detect_example()
    
    print("\n" + "="*50 + "\n")
    
    print("2. 聊天应用示例:")
    chat_app_example()
    
    print("\n" + "="*50 + "\n")
    
    print("3. 完成应用示例:")
    completion_app_example()
    
    print("\n" + "="*50 + "\n")
    
    print("4. 工作流应用示例:")
    workflow_app_example()

if __name__ == "__main__":
    main()